package com.winona.adapter;

import java.util.ArrayList;
import java.util.Locale;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.widget.BaseAdapter;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

/**
 * ListView的基础适配器，继承于BaseAdapter
 * 
 * 省去子类在父类中的共同代码，更加简洁
 * 
 * @author Lanyan
 * 
 */
public abstract class BaseListAdapter<T> extends BaseAdapter {
	protected ArrayList<T> mList;// 列表List
	protected LayoutInflater mInflater;// 布局管理

	protected DisplayImageOptions options;
	protected ImageLoader imageLoader;
	protected Locale mLocale;

	protected static final int NO_DEFAULT = -1;// 有图片但是没有默认图
	protected static final int NO_IMAGE = 0;// 没有图片

	/**
	 * 
	 * @param context
	 * @param list
	 * @param defaultId
	 *            传0则表示适配器中没有图片需要显示,-1表示需要显示但没有默认图片
	 */
	protected BaseListAdapter(Context context, ArrayList<T> list, int defaultId) {
		mInflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		mList = list;
		mLocale = context.getResources().getConfiguration().locale;
		if (defaultId == NO_IMAGE) {// 没有图片
			return;
		} else if (defaultId == NO_DEFAULT) {// 有图片但是没有默认图
			options = new DisplayImageOptions.Builder().cacheInMemory()
					.cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build();
		} else {// 有图片有默认图
			options = new DisplayImageOptions.Builder()
					.showStubImage(defaultId).showImageForEmptyUri(defaultId)
					.showImageOnFail(defaultId).cacheInMemory().cacheOnDisc()
					.bitmapConfig(Bitmap.Config.RGB_565).build();
		}

		imageLoader = ImageLoader.getInstance();
	}

	@Override
	public int getCount() {
		return (mList == null) ? 0 : mList.size();
	}

	@Override
	public Object getItem(int position) {
		return (mList == null) ? null : mList.get(position);
		
	}

	@Override
	public long getItemId(int position) {
		return position;
	}
}
